/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ares.service.sapimpl;

import com.ares.service.bean.BeanMovilidad;
import com.ares.service.bean.BeanPlanAccion;
import com.ares.service.dao.EvaluacionPlanAccion_I;
import com.ares.service.sap.ConexionSAP;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author electro
 */
public class SapPlanAccion implements EvaluacionPlanAccion_I{

    public List<BeanPlanAccion> leerPlanAccion(String idEmpleado, String periodo, String version) throws Exception {
        List<BeanPlanAccion> lstPlanAccion = new ArrayList<BeanPlanAccion>();
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();

        try{
            conSAP.RegistrarRFC("ZHR_RFC_LEER_PLANACC_ED");
            conSAP.IngresarDatosInput(idEmpleado, "ID_EMPLEADO");
            conSAP.IngresarDatosInput(periodo, "PERIODO");
            conSAP.IngresarDatosInput(version, "ID_VERSION");
            conSAP.EjecutarRFC();

            String estado = conSAP.rFC.getExportParameterList().getString("ESTADO");
            String movilidadUnidadOperativa = conSAP.rFC.getExportParameterList().getString("MOVUNDOPE");
            String preferenciaUnidadOperativa = conSAP.rFC.getExportParameterList().getString("PREFERENCIA1");
            String movilidadPais = conSAP.rFC.getExportParameterList().getString("MOVOTROPAIS");
            String preferenciaPais = conSAP.rFC.getExportParameterList().getString("PREFERENCIA2");
            /*
            System.out.println("LOS VALORES EN EL LEER DEL PLAN DEE ACCION SON:");
            System.out.println("movilidadUnidadOperativa: |" + movilidadUnidadOperativa+"|");
            System.out.println("preferenciaUnidadOperativa: |" + preferenciaUnidadOperativa+"|");
            System.out.println("movilidadPais: |" + movilidadPais+"|");
            System.out.println("preferenciaPais: |" + preferenciaPais+"|");
			*/
            com.sap.mw.jco.JCO.Table PLAN_ACCION = null;
            PLAN_ACCION = conSAP.rFC.getTableParameterList().getTable("T_DPLANAC_ED_OUT");

            for (int i = 0; i < PLAN_ACCION.getNumRows(); i++) {
                PLAN_ACCION.setRow(i);
                BeanPlanAccion beanPlanAccion = new BeanPlanAccion();
                beanPlanAccion.setCodigo(PLAN_ACCION.getString("CODTDPA"));
                beanPlanAccion.setDescripcion(PLAN_ACCION.getString("DESCRIP"));
                beanPlanAccion.setCorrelativo(PLAN_ACCION.getString("CORR"));
                beanPlanAccion.setTexto(PLAN_ACCION.getString("TEXTO"));
                lstPlanAccion.add(beanPlanAccion);
            }

            //CREO UN PAR DE BEANS PLANACCION PARA GRABAR LOS DATOS DE LOS CHECKS
            //BEAN PARA MOVIMIENTO DE UNIDAD OPERATIVA
            BeanPlanAccion beanPlanAccion = new BeanPlanAccion();
            beanPlanAccion.setCodigo("333");
            beanPlanAccion.setCorrelativo(movilidadUnidadOperativa);
            beanPlanAccion.setTexto(preferenciaUnidadOperativa);
            if(movilidadUnidadOperativa.equals("")){
            	System.out.println("Seteo a N para el movimientoUO");
            	beanPlanAccion.setCorrelativo("N");
            }

            lstPlanAccion.add(beanPlanAccion);

            //BEAN PARA MOVIMIENTO DE PAIS
            BeanPlanAccion beanPlanAccionAux = new BeanPlanAccion();
            beanPlanAccionAux.setCodigo("444");
            beanPlanAccionAux.setCorrelativo(movilidadPais);
            beanPlanAccionAux.setTexto(preferenciaPais);
            if(movilidadPais.equals("")){
            	System.out.println("Seteo a N para el movimientoPais");
            	beanPlanAccionAux.setCorrelativo("N");
            }

            lstPlanAccion.add(beanPlanAccionAux);
            //System.out.println("en el sap leer, la longitud es: " + lstPlanAccion.size());
        }catch(Exception e){
            e.getMessage();
        }
        return lstPlanAccion;
    }

    public String getEstadoPlanAccion(String idEmpleado, String periodo, String version) throws Exception {
        String estado = "";
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();

        try{
            conSAP.RegistrarRFC("ZHR_RFC_LEER_PLANACC_ED");
            conSAP.IngresarDatosInput(idEmpleado, "ID_EMPLEADO");
            conSAP.IngresarDatosInput(periodo, "PERIODO");
            conSAP.IngresarDatosInput(version, "ID_VERSION");
            conSAP.EjecutarRFC();
            estado = conSAP.rFC.getExportParameterList().getString("ESTADO");
        }catch(Exception e){
            e.getMessage();
        }
        return estado;
    }

    public String insertarPlanAccion(String idEmpleado, String periodo, String version, String estado, List<BeanPlanAccion> lstPlanAccion, BeanMovilidad beanMovilidad) throws Exception {
        String respuesta = "SE HA GUARDADO LOS CAMBIOS";
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();
        /*
        System.out.println("Data de entrada en el insertarPlanAccion");
        System.out.println("TAMANIO DE LA LISTA DE PLAN ACCION: " + lstPlanAccion.size());
        System.out.println("ID_EMPLEADO" + idEmpleado);
        System.out.println("PERIODO" + periodo);
        System.out.println("ID_VERSION" + version);
        System.out.println("ESTADO" + estado);
        System.out.println("MOVUNDOPE: |" + beanMovilidad.getMovilidadUnidadOperativa()+"|");
        System.out.println("PREFERENCIA1: |" + beanMovilidad.getPreferenciaUnidadOperativa()+"|");
        System.out.println("MOVOTROPAIS: |" + beanMovilidad.getMovilidadPais()+"|");
        System.out.println("PREFERENCIA2: |" + beanMovilidad.getPreferenciaPais() + "|");
        */
        System.out.println("DATOS PARA GRABAR:");
        System.out.println("ID_EMPLEADO: " +idEmpleado);
        System.out.println("PERIODO: " + periodo);
        System.out.println("ID_VERSION: " + version);
        System.out.println("ESTADO: " + estado);
        try{
            conSAP.RegistrarRFC("ZHR_RFC_GRABAR_PLANACC_ED");
            conSAP.IngresarDatosInput(idEmpleado, "ID_EMPLEADO");
            conSAP.IngresarDatosInput(periodo, "PERIODO");
            conSAP.IngresarDatosInput(version, "ID_VERSION");
            conSAP.IngresarDatosInput(estado, "ESTADO");
            conSAP.IngresarDatosInput(beanMovilidad.getMovilidadUnidadOperativa(), "MOVUNDOPE");
            conSAP.IngresarDatosInput(beanMovilidad.getPreferenciaUnidadOperativa(), "PREFERENCIA1");
            conSAP.IngresarDatosInput(beanMovilidad.getMovilidadPais(), "MOVOTROPAIS");
            conSAP.IngresarDatosInput(beanMovilidad.getPreferenciaPais(), "PREFERENCIA2");
            conSAP.CreaTabla("T_DPLANAC_ED");

            for (int i = 0; i < lstPlanAccion.size(); i++) {
            	if(!lstPlanAccion.get(i).getCodigo().equals("333") && !lstPlanAccion.get(i).getCodigo().equals("444")){           		            		
	                conSAP.IngresarDatoTabla(lstPlanAccion.get(i).getCodigo(), "CODTDPA", i);
	                conSAP.IngresarDatoTabla(lstPlanAccion.get(i).getCorrelativo(), "CORR", i);
	                conSAP.IngresarDatoTabla(lstPlanAccion.get(i).getTexto(), "TEXTO", i);
            	}
            }
            conSAP.EjecutarRFC();

        }catch(Exception e){
            e.getMessage();
        }
        return respuesta;
    }

    public String enviarPlanAccion(String idEmpleado, String periodo, String version, String estado) throws Exception{
        String mensaje = "SE ENVIARON LOS DATOS CORRECTAMENTE";
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();
        System.out.println("enviarPlanAccion");
        try{
            conSAP.RegistrarRFC("ZHR_RFC_ACTESTPLANACC_ED");
            conSAP.IngresarDatosInput(idEmpleado, "ID_EMPLEADO");
            	System.out.println("ID_EMPLEADO: " + idEmpleado);
            conSAP.IngresarDatosInput(periodo, "PERIODO");
            	System.out.println("PERIODO: " + periodo);
            conSAP.IngresarDatosInput(version, "ID_VERSION");
            	System.out.println("ID_VERSION: " + version);
            conSAP.IngresarDatosInput(estado, "ESTADO");
            	System.out.println("ESTADO: " + estado);
            conSAP.EjecutarRFC();
        }
        catch(Exception e){
            e.getMessage();
        }
        return mensaje;
    }
}